#!/bin/bash

###########################################
#安装 rules_cc	commit 8bb0eb5c5ccd96b91753bb112096bb6993d16d13
###########################################

#安装基础依赖
yum install -y gcc gcc-c++ make bazel

#安装
###########################################
#1.获取 rules_cc 源码并切换版本
cd /home
git clone https://github.com/bazelbuild/rules_cc.git
cd rules_cc
git checkout 8bb0eb5
#2.查看当前提交信息（确认是目标版本）
git log -1


#############################################
#运行验证
#############################################
#配置 Bazel 项目引用本地源
#1. 创建 Bazel 项目目录
mkdir -p /home/bazel_project && cd /home/bazel_project
#2. 编写 WORKSPACE 文件（引用本地 rules_cc 源码）
# 使用 local_repository 直接引用当前 checkout 的源码路径
cat > WORKSPACE <<EOF
local_repository(
    name = "rules_cc",
    path = "/home/rules_cc",  # 替换为实际源码路径（用户当前路径为 /home/rules_cc）
)

# 加载规则依赖（可选，根据需求启用）
load("@rules_cc//cc:repositories.bzl", "rules_cc_dependencies", "rules_cc_toolchains")
rules_cc_dependencies()
rules_cc_toolchains()
EOF

#3. 编写示例 BUILD 文件
mkdir src && cd src
cat > BUILD <<EOF
load("@rules_cc//cc:defs.bzl", "cc_library")

cc_library(
    name = "example_lib",
    srcs = ["example.cpp"],
    hdrs = ["example.h"],
)
EOF

#验证目标版本规则可用性
#1. 创建示例代码文件
# 头文件
cat > example.h <<EOF
#ifndef EXAMPLE_H_
#define EXAMPLE_H_

void print_version();

#endif
EOF

# 源文件
cat > example.cpp <<EOF
#include "example.h"
#include <iostream>

void print_version() {
    std::cout << "Using rules_cc commit: 8bb0eb5" << std::endl;
}
EOF
#2. 使用 Bazel 构建
cd ..  # 返回项目根目录
bazel build //src:example_lib
#3. 检查构建结果
bazel info bazel-bin  # 查看输出路径
ls -l bazel-bin/src  # 应生成静态库文件



